package com.treeroot.planeservice.plane.controller;

import com.treeroot.commonutils.result.R;
import com.treeroot.planeservice.plane.entity.PcPlaneConnecting;
import com.treeroot.planeservice.plane.service.PcPlaneConnectingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @Description:
 * @Author:treeRoot
 * @Email:553503639@qq.com
 * @Date: Create in 12:08 / 2022/6/11
 */
@RestController
@RequestMapping("/pc/connecting")
@Api(description = "查询多程飞机信息")
@CrossOrigin

public class PcConnectingController {
    @Autowired
    private PcPlaneConnectingService planeConnectingService;

    /**
     * echarts
     */
    @GetMapping("count")
    public  R count (){
        int count = planeConnectingService.count(null);
        return R.ok().data("ConnectingCount",count);
    }



    /**
     * 通过航班id 查询该航班信息
     *
     * @param id 航班id
     */
    @ApiOperation(value = "根据ID查询飞机")
    @GetMapping("getPlane/{id}")
    public R getPlaneById(
            @PathVariable String id) {
        return R.ok().data("plane", planeConnectingService.getById(id));
    }

    /**
     * 添加航班：
     * 系统管理员可以在系统中增加飞机航班
     *
     * @param PcPlaneConnecting 实体类数据
     */
    @ApiOperation(" 添加航班信息")
    @PostMapping("addPlane")
    public R addPlane(@RequestBody PcPlaneConnecting PcPlaneConnecting) {
        planeConnectingService.save(PcPlaneConnecting);
        return R.ok();
    }


    /**
     * 删除航班：
     * 系统管理员可以删除系统中已经存在的航班。
     * 根据航班id来删除
     *
     * @param id 根据ID删除航班
     */
    @ApiOperation(value = "根据ID删除航班")
    @DeleteMapping("removeById/{id}")
    public R removeById(@PathVariable String id) {

        boolean flag = planeConnectingService.removeById(id);

        return R.ok();
    }


    /**
     * 修改航班属性：
     * 系统管理员可以根据航空公司实际航班更改情况修
     * 改系统数据库中已经存在的航班的属性。
     *
     * @param id    根据ID修改航班
     * @param plane 需要修改的数据
     */
    @ApiOperation(value = "根据ID修改航班")
    @PutMapping("{id}")
    public R updatePlaneById(
            @PathVariable String id,
            @RequestBody PcPlaneConnecting plane) {
        planeConnectingService.updateById(plane.setId(id));
        return R.ok();
    }

    /**
     * 编辑/更新航班
     *
     * @param PcPlaneConnecting 航班实体信息  这条接口的用法是 通过id获取到航班信息 已经拿到了航班的信息 然后 拿着信息里的id去修改
     */
    @ApiOperation(value = "修改航班")
    @PostMapping("updatePlane")
    public R updatePlane(@RequestBody PcPlaneConnecting PcPlaneConnecting) {
        boolean flag = planeConnectingService.updateById(PcPlaneConnecting);
        if (flag) {
            return R.ok();
        } else
            return R.error();
    }

    /**
     * @param current 当前页
     * @param limit   最大页
     */

    @PostMapping("connectingPage/{current}/{limit}")
    public  R  getconnectingPage(@PathVariable long current, @PathVariable long limit){
        Map map =planeConnectingService.getConnectingList(current, limit);
        return  R.ok().data(map);
    }


    /**
     * 条件分页查询
     * @param current
     * @param limit
     * @param plane
     * @return
     */
    @ApiOperation(value = "条件查询带分页的方法")
    @PostMapping("pagePlaneCondition/{current}/{limit}")
    public R pagePlaneCondition(@PathVariable long current, @PathVariable long limit,
                                @RequestBody(required = false) PcPlaneConnecting plane) {
        Map map = planeConnectingService.getQueryConnectingList(current, limit, plane);

        return R.ok().data(map);
    }
}
